home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DStyle.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  10.5 KB  |  384 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DStyle.h
  3.  
  4.      Contains:    Q3Style types and routines                                         
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DSTYLE__
  18. #define __QD3DSTYLE__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26. #if PRAGMA_ONCE
  27. #pragma once
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #if PRAGMA_IMPORT
  35. #pragma import on
  36. #endif
  37.  
  38. #if PRAGMA_STRUCT_ALIGN
  39.     #pragma options align=power
  40. #elif PRAGMA_STRUCT_PACKPUSH
  41.     #pragma pack(push, 2)
  42. #elif PRAGMA_STRUCT_PACK
  43.     #pragma pack(2)
  44. #endif
  45.  
  46. #if PRAGMA_ENUM_ALWAYSINT
  47.     #pragma enumsalwaysint on
  48. #elif PRAGMA_ENUM_OPTIONS
  49.     #pragma option enum=int
  50. #elif PRAGMA_ENUM_PACK
  51.     #if __option(pack_enums)
  52.         #define PRAGMA_ENUM_PACK__QD3DSTYLE__
  53.     #endif
  54.     #pragma options(!pack_enums)
  55. #endif
  56.  
  57. /******************************************************************************
  58.  **                                                                             **
  59.  **                    Style Base Class Routines                                 **
  60.  **                                                                             **
  61.  *****************************************************************************/
  62. EXTERN_API_C( TQ3ObjectType )
  63. Q3Style_GetType                    (TQ3StyleObject         style);
  64.  
  65. EXTERN_API_C( TQ3Status )
  66. Q3Style_Submit                    (TQ3StyleObject         style,
  67.                                  TQ3ViewObject             view);
  68.  
  69.  
  70. /******************************************************************************
  71.  **                                                                             **
  72.  **                                 Subdivision                                 **
  73.  **                                                                             **
  74.  *****************************************************************************/
  75.  
  76. enum TQ3SubdivisionMethod {
  77.     kQ3SubdivisionMethodConstant = 0,
  78.     kQ3SubdivisionMethodWorldSpace = 1,
  79.     kQ3SubdivisionMethodScreenSpace = 2
  80. };
  81. typedef enum TQ3SubdivisionMethod TQ3SubdivisionMethod;
  82.  
  83.  
  84.  
  85. struct TQ3SubdivisionStyleData {
  86.     TQ3SubdivisionMethod             method;
  87.     float                             c1;
  88.     float                             c2;
  89. };
  90. typedef struct TQ3SubdivisionStyleData    TQ3SubdivisionStyleData;
  91. EXTERN_API_C( TQ3StyleObject )
  92. Q3SubdivisionStyle_New            (const TQ3SubdivisionStyleData * data);
  93.  
  94. EXTERN_API_C( TQ3Status )
  95. Q3SubdivisionStyle_Submit        (const TQ3SubdivisionStyleData * data,
  96.                                  TQ3ViewObject             view);
  97.  
  98. EXTERN_API_C( TQ3Status )
  99. Q3SubdivisionStyle_SetData        (TQ3StyleObject         subdiv,
  100.                                  const TQ3SubdivisionStyleData * data);
  101.  
  102. EXTERN_API_C( TQ3Status )
  103. Q3SubdivisionStyle_GetData        (TQ3StyleObject         subdiv,
  104.                                  TQ3SubdivisionStyleData * data);
  105.  
  106.  
  107. /******************************************************************************
  108.  **                                                                             **
  109.  **                                Pick ID                                         **
  110.  **                                                                             **
  111.  *****************************************************************************/
  112. EXTERN_API_C( TQ3StyleObject )
  113. Q3PickIDStyle_New                (unsigned long             id);
  114.  
  115. EXTERN_API_C( TQ3Status )
  116. Q3PickIDStyle_Submit            (unsigned long             id,
  117.                                  TQ3ViewObject             view);
  118.  
  119. EXTERN_API_C( TQ3Status )
  120. Q3PickIDStyle_Get                (TQ3StyleObject         pickIDObject,
  121.                                  unsigned long *        id);
  122.  
  123. EXTERN_API_C( TQ3Status )
  124. Q3PickIDStyle_Set                (TQ3StyleObject         pickIDObject,
  125.                                  unsigned long             id);
  126.  
  127.  
  128. /******************************************************************************
  129.  **                                                                             **
  130.  **                                Pick Parts                                     **
  131.  **                                                                             **
  132.  *****************************************************************************/
  133.  
  134. enum TQ3PickPartsMasks {
  135.     kQ3PickPartsObject            = 0,
  136.     kQ3PickPartsMaskFace        = 1 << 0,
  137.     kQ3PickPartsMaskEdge        = 1 << 1,
  138.     kQ3PickPartsMaskVertex        = 1 << 2
  139. };
  140. typedef enum TQ3PickPartsMasks TQ3PickPartsMasks;
  141.  
  142.  
  143. typedef unsigned long                     TQ3PickParts;
  144. EXTERN_API_C( TQ3StyleObject )
  145. Q3PickPartsStyle_New            (TQ3PickParts             parts);
  146.  
  147. EXTERN_API_C( TQ3Status )
  148. Q3PickPartsStyle_Submit            (TQ3PickParts             parts,
  149.                                  TQ3ViewObject             view);
  150.  
  151. EXTERN_API_C( TQ3Status )
  152. Q3PickPartsStyle_Get            (TQ3StyleObject         pickPartsObject,
  153.                                  TQ3PickParts *            parts);
  154.  
  155. EXTERN_API_C( TQ3Status )
  156. Q3PickPartsStyle_Set            (TQ3StyleObject         pickPartsObject,
  157.                                  TQ3PickParts             parts);
  158.  
  159.  
  160. /******************************************************************************
  161.  **                                                                             **
  162.  **                        Receive Shadows                                         **
  163.  **                                                                             **
  164.  *****************************************************************************/
  165. EXTERN_API_C( TQ3StyleObject )
  166. Q3ReceiveShadowsStyle_New        (TQ3Boolean             receives);
  167.  
  168. EXTERN_API_C( TQ3Status )
  169. Q3ReceiveShadowsStyle_Submit    (TQ3Boolean             receives,
  170.                                  TQ3ViewObject             view);
  171.  
  172. EXTERN_API_C( TQ3Status )
  173. Q3ReceiveShadowsStyle_Get        (TQ3StyleObject         styleObject,
  174.                                  TQ3Boolean *            receives);
  175.  
  176. EXTERN_API_C( TQ3Status )
  177. Q3ReceiveShadowsStyle_Set        (TQ3StyleObject         styleObject,
  178.                                  TQ3Boolean             receives);
  179.  
  180.  
  181. /******************************************************************************
  182.  **                                                                             **
  183.  **                            Fill Styles                                         **
  184.  **                                                                             **
  185.  *****************************************************************************/
  186.  
  187. enum TQ3FillStyle {
  188.     kQ3FillStyleFilled            = 0,
  189.     kQ3FillStyleEdges            = 1,
  190.     kQ3FillStylePoints            = 2
  191. };
  192. typedef enum TQ3FillStyle TQ3FillStyle;
  193.  
  194.  
  195. EXTERN_API_C( TQ3StyleObject )
  196. Q3FillStyle_New                    (TQ3FillStyle             fillStyle);
  197.  
  198. EXTERN_API_C( TQ3Status )
  199. Q3FillStyle_Submit                (TQ3FillStyle             fillStyle,
  200.                                  TQ3ViewObject             view);
  201.  
  202. EXTERN_API_C( TQ3Status )
  203. Q3FillStyle_Get                    (TQ3StyleObject         styleObject,
  204.                                  TQ3FillStyle *            fillStyle);
  205.  
  206. EXTERN_API_C( TQ3Status )
  207. Q3FillStyle_Set                    (TQ3StyleObject         styleObject,
  208.                                  TQ3FillStyle             fillStyle);
  209.  
  210.  
  211. /******************************************************************************
  212.  **                                                                             **
  213.  **                            Backfacing Styles                                 **
  214.  **                                                                             **
  215.  *****************************************************************************/
  216.  
  217. enum TQ3BackfacingStyle {
  218.     kQ3BackfacingStyleBoth        = 0,
  219.     kQ3BackfacingStyleRemove    = 1,
  220.     kQ3BackfacingStyleFlip        = 2
  221. };
  222. typedef enum TQ3BackfacingStyle TQ3BackfacingStyle;
  223.  
  224. EXTERN_API_C( TQ3StyleObject )
  225. Q3BackfacingStyle_New            (TQ3BackfacingStyle     backfacingStyle);
  226.  
  227. EXTERN_API_C( TQ3Status )
  228. Q3BackfacingStyle_Submit        (TQ3BackfacingStyle     backfacingStyle,
  229.                                  TQ3ViewObject             view);
  230.  
  231. EXTERN_API_C( TQ3Status )
  232. Q3BackfacingStyle_Get            (TQ3StyleObject         backfacingObject,
  233.                                  TQ3BackfacingStyle *    backfacingStyle);
  234.  
  235. EXTERN_API_C( TQ3Status )
  236. Q3BackfacingStyle_Set            (TQ3StyleObject         backfacingObject,
  237.                                  TQ3BackfacingStyle     backfacingStyle);
  238.  
  239.  
  240. /******************************************************************************
  241.  **                                                                             **
  242.  **                            Interpolation Types                                 **
  243.  **                                                                             **
  244.  *****************************************************************************/
  245.  
  246. enum TQ3InterpolationStyle {
  247.     kQ3InterpolationStyleNone    = 0,
  248.     kQ3InterpolationStyleVertex    = 1,
  249.     kQ3InterpolationStylePixel    = 2
  250. };
  251. typedef enum TQ3InterpolationStyle TQ3InterpolationStyle;
  252.  
  253. EXTERN_API_C( TQ3StyleObject )
  254. Q3InterpolationStyle_New        (TQ3InterpolationStyle     interpolationStyle);
  255.  
  256. EXTERN_API_C( TQ3Status )
  257. Q3InterpolationStyle_Submit        (TQ3InterpolationStyle     interpolationStyle,
  258.                                  TQ3ViewObject             view);
  259.  
  260. EXTERN_API_C( TQ3Status )
  261. Q3InterpolationStyle_Get        (TQ3StyleObject         interpolationObject,
  262.                                  TQ3InterpolationStyle * interpolationStyle);
  263.  
  264. EXTERN_API_C( TQ3Status )
  265. Q3InterpolationStyle_Set        (TQ3StyleObject         interpolationObject,
  266.                                  TQ3InterpolationStyle     interpolationStyle);
  267.  
  268.  
  269. /******************************************************************************
  270.  **                                                                             **
  271.  **                                Highlight Style                                 **
  272.  **                                                                             **
  273.  *****************************************************************************/
  274. EXTERN_API_C( TQ3StyleObject )
  275. Q3HighlightStyle_New            (TQ3AttributeSet         highlightAttribute);
  276.  
  277. EXTERN_API_C( TQ3Status )
  278. Q3HighlightStyle_Submit            (TQ3AttributeSet         highlightAttribute,
  279.                                  TQ3ViewObject             view);
  280.  
  281. EXTERN_API_C( TQ3Status )
  282. Q3HighlightStyle_Get            (TQ3StyleObject         highlight,
  283.                                  TQ3AttributeSet *        highlightAttribute);
  284.  
  285. EXTERN_API_C( TQ3Status )
  286. Q3HighlightStyle_Set            (TQ3StyleObject         highlight,
  287.                                  TQ3AttributeSet         highlightAttribute);
  288.  
  289.  
  290. /******************************************************************************
  291.  **                                                                             **
  292.  **                            FrontFacing Direction Styles                     **
  293.  **                                                                             **
  294.  *****************************************************************************/
  295.  
  296. enum TQ3OrientationStyle {
  297.     kQ3OrientationStyleCounterClockwise = 0,
  298.     kQ3OrientationStyleClockwise = 1
  299. };
  300. typedef enum TQ3OrientationStyle TQ3OrientationStyle;
  301.  
  302. EXTERN_API_C( TQ3StyleObject )
  303. Q3OrientationStyle_New            (TQ3OrientationStyle     frontFacingDirection);
  304.  
  305. EXTERN_API_C( TQ3Status )
  306. Q3OrientationStyle_Submit        (TQ3OrientationStyle     frontFacingDirection,
  307.                                  TQ3ViewObject             view);
  308.  
  309. EXTERN_API_C( TQ3Status )
  310. Q3OrientationStyle_Get            (TQ3StyleObject         frontFacingDirectionObject,
  311.                                  TQ3OrientationStyle *    frontFacingDirection);
  312.  
  313. EXTERN_API_C( TQ3Status )
  314. Q3OrientationStyle_Set            (TQ3StyleObject         frontFacingDirectionObject,
  315.                                  TQ3OrientationStyle     frontFacingDirection);
  316.  
  317.  
  318. /******************************************************************************
  319.  **                                                                             **
  320.  **                                AntiAlias Style                                 **
  321.  **                                                                             **
  322.  *****************************************************************************/
  323.  
  324. enum TQ3AntiAliasModeMasks {
  325.     kQ3AntiAliasModeMaskEdges    = 1 << 0,
  326.     kQ3AntiAliasModeMaskFilled    = 1 << 1
  327. };
  328. typedef enum TQ3AntiAliasModeMasks TQ3AntiAliasModeMasks;
  329.  
  330. typedef unsigned long                     TQ3AntiAliasMode;
  331.  
  332. struct TQ3AntiAliasStyleData {
  333.     TQ3Switch                         state;
  334.     TQ3AntiAliasMode                 mode;
  335.     float                             quality;
  336. };
  337. typedef struct TQ3AntiAliasStyleData    TQ3AntiAliasStyleData;
  338. EXTERN_API_C( TQ3StyleObject )
  339. Q3AntiAliasStyle_New            (const TQ3AntiAliasStyleData * data);
  340.  
  341. EXTERN_API_C( TQ3Status )
  342. Q3AntiAliasStyle_Submit            (const TQ3AntiAliasStyleData * data,
  343.                                  TQ3ViewObject             view);
  344.  
  345. EXTERN_API_C( TQ3Status )
  346. Q3AntiAliasStyle_GetData        (TQ3StyleObject         styleObject,
  347.                                  TQ3AntiAliasStyleData * data);
  348.  
  349. EXTERN_API_C( TQ3Status )
  350. Q3AntiAliasStyle_SetData        (TQ3StyleObject         styleObject,
  351.                                  const TQ3AntiAliasStyleData * data);
  352.  
  353.  
  354.  
  355.  
  356. #if PRAGMA_ENUM_ALWAYSINT
  357.     #pragma enumsalwaysint reset
  358. #elif PRAGMA_ENUM_OPTIONS
  359.     #pragma option enum=reset
  360. #elif defined(PRAGMA_ENUM_PACK__QD3DSTYLE__)
  361.     #pragma options(pack_enums)
  362. #endif
  363.  
  364. #if PRAGMA_STRUCT_ALIGN
  365.     #pragma options align=reset
  366. #elif PRAGMA_STRUCT_PACKPUSH
  367.     #pragma pack(pop)
  368. #elif PRAGMA_STRUCT_PACK
  369.     #pragma pack()
  370. #endif
  371.  
  372. #ifdef PRAGMA_IMPORT_OFF
  373. #pragma import off
  374. #elif PRAGMA_IMPORT
  375. #pragma import reset
  376. #endif
  377.  
  378. #ifdef __cplusplus
  379. }
  380. #endif
  381.  
  382. #endif /* __QD3DSTYLE__ */
  383.  
  384.